// 这个文件是为了对axios的二次封装
//目的是为了让整个项目发送Ajax请求时，通用的配置不用一遍一遍的重复编写

// 1.在这里引入axios模块
import axios from 'axios'
import 'nprogress/nprogress.css'
import NProgress from 'nprogress'
// 2。创建axios实例,以后整个项目都用这个实例发送请求
const mockAjax = axios.create({
  // target: 'http://sph-h5-api.atguigu.cn',//这个是目标地址
  baseURL: '/mock', //发送请求时的基础路径
  timeout: 1000, //设置超时时间
})

// 3.设置请求拦截器，当发送请求的时候就会触发
mockAjax.interceptors.request.use((config) => {
  NProgress.start() // 启用进度条
  return config
})

// 4.设置响应拦截器,请求响应回来后会触发
mockAjax.interceptors.response.use(
  (response) => {
    NProgress.done() // 结束进度条
    console.log('请求成功，这是mockAjax中的请求')
    return response.data
  },

  (error) => {
    NProgress.done() // 结束进度条
    // 如果请求发送错误就会在这里提示错误信息
    // return error.message 如果只写这个是错误的，因为错误信息是字符串的话是非Promise值,也会认为是成功
    //所以失败的话要返回一个promise实例，目的是为了让程序走自己设置的错误信息
    // console.log('请求失败', error)
    // return Promise.reject(new Error(error.message))
    return Promise.reject(error)
  }
)
// 5. 导出对象
export default mockAjax
